|
RAIS
3.2
|
00001 using System; 00002 using System.Collections.Generic; 00003 using System.Text; 00004 using System.Data.OleDb; 00005 using System.Data.Common; 00006 using System.Data; 00007 using System.Data.SqlClient; 00008 using System.Configuration; 00009 00010 namespace RAIS.Common.RADEVClasses 00011 { 00012 public abstract class RADEVTable 00013 { 00014 #region Fileds 00015 protected static string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\RADEVData.mdb;"; 00016 00017 protected string _IAEAEventID = ""; 00018 #endregion 00019 #region Properties 00020 00021 00022 00023 public string IAEAEventID { get { return _IAEAEventID; } } 00024 #endregion 00025 #region Public methods 00026 00027 00028 00029 00030 00031 00032 public static RADEVTable CreateTable(string provderName, string tableName) 00033 { 00034 ConnectionStringSettings connectionSet = 00035 ConfigurationManager.ConnectionStrings["RAISConnectionString"]; 00036 connectionString = connectionSet.ConnectionString; 00037 00038 RADEVTable instance; 00039 using (DbConnection connection = GetConnection(provderName)) 00040 { 00041 using (DbCommand command = GetCommand(tableName, connection, out instance)) 00042 { 00043 using (DbDataReader reader = command.ExecuteReader()) 00044 { 00045 while (reader.Read()) 00046 { 00047 instance.AddNewRow(reader); 00048 } 00049 } 00050 } 00051 } 00052 return instance; 00053 } 00058 public abstract List<RADEVTable> GetData(); 00063 public abstract string GetSourceName(); 00069 public abstract bool IsValid(RADEVCriterias criterias); 00075 public object GetDataList(RADEVCriterias criterias) 00076 { 00077 List<RADEVTable> ret = new List<RADEVTable>(); 00078 foreach (RADEVTable value in GetData()) 00079 { 00080 if (value.IsValid(criterias)) 00081 ret.Add(value); 00082 } 00083 return ret; 00084 } 00085 #endregion 00086 #region Private methods 00087 private static DbCommand GetCommand(string tableName, DbConnection connection,out RADEVTable instance) 00088 { 00089 DbCommand command; 00090 00091 switch (tableName) 00092 { 00093 case "EventMaster": 00094 instance = EventMaster.CreateInstatce(); 00095 break; 00096 case "EventWorkPublicDosimetry": 00097 instance = EventWorkPublicDosimetry.CreateInstatce(); 00098 break; 00099 case "RadiationGenerator": 00100 instance = RadiationGenerator.CreateInstatce(); 00101 break; 00102 case "RadiationDevice": 00103 instance = RadiationDevice.CreateInstatce(); 00104 break; 00105 case "RadiationSource": 00106 instance = RadiationSource.CreateInstatce(); 00107 break; 00108 case "EventWorkerPublicType": 00109 instance = EventWorkerPublicType.CreateInstatce(); 00110 break; 00111 case "EventWorkerPublicCauses": 00112 instance = EventWorkerPublicCauses.CreateInstatce(); 00113 break; 00114 default: 00115 throw new Exception("Don't support this report"); 00116 } 00117 00118 if (connection is OleDbConnection) 00119 command = new OleDbCommand(instance.GetCommandString(), connection as OleDbConnection); 00120 else if(connection is SqlConnection) 00121 command = new SqlCommand(instance.GetCommandString(), connection as SqlConnection); 00122 else 00123 throw new Exception("Don't support this provider"); 00124 00125 00126 return command; 00127 } 00128 private static DbConnection GetConnection(string provderName) 00129 { 00130 DbConnection con; 00131 if(provderName=="access") 00132 con = new OleDbConnection(connectionString); 00133 else if (provderName=="sql") 00134 con = new SqlConnection(connectionString); 00135 else 00136 throw new Exception("Don't support this provider"); 00137 con.Open(); 00138 return con; 00139 } 00140 protected abstract string GetCommandString(); 00141 protected abstract void AddNewRow(IDataReader reader); 00142 protected RADEVTable(string iAEAEventID) 00143 { 00144 _IAEAEventID = iAEAEventID; 00145 } 00146 protected RADEVTable() { } 00147 #endregion 00148 } 00149 }